Virtual machine technology is today well established. A system virtual machine provides a complete system platform which supports the execution of a complete operating system (OS). System virtual machines (sometimes called hardware virtual machines) allow the sharing of the underlying physical machine resources between different virtual machines, each running its own operating system. For example, FIG. 1 shows a system 10 that includes a computer 12 having a virtualization engine 14, and plural virtual machines 16 to 20. The software layer providing the virtualization is called a virtual machine monitor or hypervisor 14. A hypervisor can run on bare hardware or on top of an operating system.
Some advantages of system virtual machines are: multiple OS environments can co-exist on the same computer, in strong isolation from each other; the virtual machine can provide an instruction set architecture that is somewhat different from that of the real machine; application provisioning, maintenance, high availability and disaster recovery; etc.
Information Technology (IT) professionals are extensively using the virtual machine technology for software development and by enterprises for their IT server infrastructure. For the x86 architecture, there are multiple vendors that provide support in this field, e.g., VMware, Citrix/XEN, Microsoft, and Sun.
One appealing aspect of virtualization is the decoupling of the (server) operating system from the physical hardware by the hypervisor shim. This shim creates a virtual machine that sits between the (server's) operating system and the hardware. This makes it possible to take an entire server instance and move it from one physical server machine to another physical server machine without making any reconfigurations of the server instance. “All” that is needed is to move the virtual machine.
With more recent hypervisors such transitions are possible when the virtual machine is running. Hence, the virtual machine (and thus the server) does not have to be taken off-line when maintenance needs to be performed on the physical server that supports the virtual machine. In other words, during the maintenance work, the virtual machine can be relocated on a secondary physical server and then moved back when the maintenance on the primary physical server has been completed.
However, there is not possible to split a virtual machine and distribute application processes among the virtual machine parts. In other words, the traditional hypervisors are capable of moving the virtual machine as a whole from a first server to a second server but not groups of application processes.
Accordingly, it would be desirable to provide devices, systems and methods that avoid the afore-described problems and drawbacks.